package util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class HttpUtils {

	private static final HttpClient httpClient = new DefaultHttpClient();
	
	private static HttpGet httpGet = null;
	
	private static HttpPost httpPost = null;
	
	private static HttpResponse response = null;
	
	private static HttpEntity entity = null;
	
	private HttpUtils(){}
	private static void shutDown() {
		httpClient.getConnectionManager().shutdown();  
	}
	public static String httpGet(String url) throws ClientProtocolException, IOException{
		httpGet = new HttpGet(url);
		response = httpClient.execute(httpGet);
		entity =response.getEntity();
		String result=EntityUtils.toString(entity,"utf-8");
		shutDown();
		return result;
	}
	
	public static String httpPost(String url, Map<String, String> data)throws ClientProtocolException, IOException{
		 httpPost = postForm(url, data);  
		 response = httpClient.execute(httpPost);
		 entity = response.getEntity();  
	     String result = EntityUtils.toString(entity,"utf-8");
//	     shutDown();
		return result;
	}
	
	private static HttpPost postForm(String url, Map<String, String> params){  
         
	        HttpPost httpost = new HttpPost(url);  
	        List<NameValuePair> nvps = new ArrayList <NameValuePair>();  
	        Set<String> keySet = params.keySet();  
	        for(String key : keySet) {  
	            nvps.add(new BasicNameValuePair(key,  params.get(key)+""));  
	        }  
	        try {  
	            httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));  
	        } catch (UnsupportedEncodingException e) {  
	            e.printStackTrace();  
	        }  
	        return httpost;  
	    }  
}
